﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ServiceModel.Channels;
using System.ComponentModel;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.RelatorioWs;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ClienteVerRankingCliente : System.Web.UI.Page
    {
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        PubClub_Relatorio_WS webServiceRelatorio = new PubClub_Relatorio_WS();
        ObjetoCliente cliente;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Cliente"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }
            else
            {
                cliente = webServiceCliente.GetCliente(Convert.ToInt32(Session["Cliente"]));
            }

            TableHeaderRow linhaCabecalho = new TableHeaderRow();

            TableHeaderCell celulaCabecalhoPosicao = new TableHeaderCell();
            Label labelCabecalhoPosicao = new Label();

            TableHeaderCell celulaCabecalhoNomeCliente = new TableHeaderCell();
            Label labelCabecalhoNomeCliente = new Label();

            TableHeaderCell celulaCabecalhoDose = new TableHeaderCell();
            Label labelCabecalhoDose = new Label();

            TableHeaderCell celulaCabecalhoValor = new TableHeaderCell();
            Label labelCabecalhoValor = new Label();

            labelCabecalhoPosicao.Text = "Posição";
            celulaCabecalhoPosicao.Controls.Add(labelCabecalhoPosicao);
            linhaCabecalho.Cells.Add(celulaCabecalhoPosicao);

            labelCabecalhoNomeCliente.Text = "Nome";
            celulaCabecalhoNomeCliente.Controls.Add(labelCabecalhoNomeCliente);
            linhaCabecalho.Cells.Add(celulaCabecalhoNomeCliente);

            labelCabecalhoDose.Text = "Dose";
            celulaCabecalhoDose.Controls.Add(labelCabecalhoDose);
            linhaCabecalho.Cells.Add(celulaCabecalhoDose);

            labelCabecalhoValor.Text = "Valor";
            celulaCabecalhoValor.Controls.Add(labelCabecalhoValor);
            linhaCabecalho.Cells.Add(celulaCabecalhoValor);

            LabelAviso.Visible = false;

            BindingList<RankingCliente> listaRankingMelhoresClientesDoses = new BindingList<RankingCliente>(webServiceRelatorio.MelhoresClientes("Doses"));

            TabelaMelhoresClientes.Rows.Add(linhaCabecalho);

            int i = 0;

            if (listaRankingMelhoresClientesDoses.Count == 0)
            {
                LabelAviso.Text = "Não existe ranking no momento.";
                LabelAviso.Visible = true;
            }
            else
            {
                TabelaMelhoresClientes.Visible = true;
                LabelAviso.Visible = false;

                foreach (var item in listaRankingMelhoresClientesDoses)
                {

                    TableRow linhaDados = new TableRow();

                    TableCell celulaPosicao = new TableCell();
                    Label labelPosicao = new Label();

                    TableCell celulaNomeDoCliente = new TableCell();
                    Label labelNomeDoCliente = new Label();

                    TableCell celulaDose = new TableCell();
                    Label labelDose = new Label();

                    TableCell celulaValor = new TableCell();
                    Label labelValor = new Label();

                    if (i % 2 != 0)
                    {
                        linhaDados.CssClass = "odd";
                    }
                    i++;


                    labelPosicao.Text = i.ToString() + "º"; ;
                    celulaPosicao.Controls.Add(labelPosicao);
                    linhaDados.Cells.Add(celulaPosicao);

                    labelNomeDoCliente.Text = item.Nome;
                    celulaNomeDoCliente.Controls.Add(labelNomeDoCliente);
                    linhaDados.Cells.Add(celulaNomeDoCliente);


                    labelDose.Text = item.Doses.ToString();
                    celulaDose.Controls.Add(labelDose);
                    linhaDados.Cells.Add(celulaDose);

                    labelValor.Text = "R$" + item.Valor.ToString("N2");
                    celulaValor.Controls.Add(labelValor);
                    celulaValor.CssClass = "alignRight";
                    linhaDados.Cells.Add(celulaValor);

                    TabelaMelhoresClientes.Rows.Add(linhaDados);
                }
            }
        }

        protected void CheckBoxMostraRankingPorDoses_CheckedChanged(object sender, EventArgs e)
        {
            if (CheckBoxMostraRankingPorDoses.Checked == true)
            {
                TabelaMelhoresClientes.Rows.Clear();

                TableHeaderRow linhaCabecalho = new TableHeaderRow();

                TableHeaderCell celulaCabecalhoPosicao = new TableHeaderCell();
                Label labelCabecalhoPosicao = new Label();

                TableHeaderCell celulaCabecalhoNomeCliente = new TableHeaderCell();
                Label labelCabecalhoNomeCliente = new Label();

                TableHeaderCell celulaCabecalhoDose = new TableHeaderCell();
                Label labelCabecalhoDose = new Label();

                TableHeaderCell celulaCabecalhoValor = new TableHeaderCell();
                Label labelCabecalhoValor = new Label();

                labelCabecalhoPosicao.Text = "Posição";
                celulaCabecalhoPosicao.Controls.Add(labelCabecalhoPosicao);
                linhaCabecalho.Cells.Add(celulaCabecalhoPosicao);

                labelCabecalhoNomeCliente.Text = "Nome";
                celulaCabecalhoNomeCliente.Controls.Add(labelCabecalhoNomeCliente);
                linhaCabecalho.Cells.Add(celulaCabecalhoNomeCliente);

                labelCabecalhoDose.Text = "Dose";
                celulaCabecalhoDose.Controls.Add(labelCabecalhoDose);
                linhaCabecalho.Cells.Add(celulaCabecalhoDose);

                labelCabecalhoValor.Text = "Valor";
                celulaCabecalhoValor.Controls.Add(labelCabecalhoValor);
                linhaCabecalho.Cells.Add(celulaCabecalhoValor);

                BindingList<RankingCliente> listaRankingMelhoresClientesValor = new BindingList<RankingCliente>(webServiceRelatorio.MelhoresClientes("Valor"));

                TabelaMelhoresClientes.Rows.Add(linhaCabecalho);

                int i = 0;

                if (listaRankingMelhoresClientesValor.Count == 0)
                {
                    LabelAviso.Text = "Não existe ranking no momento.";
                    LabelAviso.Visible = true;
                }
                else
                {
                    TabelaMelhoresClientes.Visible = true;
                    LabelAviso.Visible = false;

                    foreach (var item in listaRankingMelhoresClientesValor)
                    {

                        TableRow linhaDados = new TableRow();

                        TableCell celulaPosicao = new TableCell();
                        Label labelPosicao = new Label();

                        TableCell celulaNomeDoCliente = new TableCell();
                        Label labelNomeDoCliente = new Label();

                        TableCell celulaDose = new TableCell();
                        Label labelDose = new Label();

                        TableCell celulaValor = new TableCell();
                        Label labelValor = new Label();

                        if (i % 2 != 0)
                        {
                            linhaDados.CssClass = "odd";
                        }
                        i++;


                        labelPosicao.Text = i.ToString() + "º"; ;
                        celulaPosicao.Controls.Add(labelPosicao);
                        linhaDados.Cells.Add(celulaPosicao);

                        labelNomeDoCliente.Text = item.Nome;
                        celulaNomeDoCliente.Controls.Add(labelNomeDoCliente);
                        linhaDados.Cells.Add(celulaNomeDoCliente);


                        labelDose.Text = item.Doses.ToString();
                        celulaDose.Controls.Add(labelDose);
                        linhaDados.Cells.Add(celulaDose);

                        labelValor.Text = "R$" + item.Valor.ToString("N2");
                        celulaValor.Controls.Add(labelValor);
                        celulaValor.CssClass = "alignRight";
                        linhaDados.Cells.Add(celulaValor);

                        TabelaMelhoresClientes.Rows.Add(linhaDados);
                    }

                    TabelaMelhoresClientes.Visible = true;                   
                }
            }
            else
            {
                Response.Redirect("ClienteVerRankingClientes.aspx");
            }
        }        
    }
}